#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "gestion_malade.h"

void init_malades(FILE *ficheMals,malade clinique_mal[], int *m)
{
        
        int i=0;
        char c ; 
	char NOM [20];
	char PRENOM [20];
	char TYPE_SANG [20];
	char NATION [20];
	int NUM;
	long int ID;
        ficheMals=fopen("malade.txt","r");
        if (ficheMals != NULL)
                {
        while(fscanf(ficheMals,"%d %c %s %s %ld %s %s",&(clinique_mal[i].num),&c,clinique_mal[i].nom,clinique_mal[i].prenom,&(clinique_mal[i].Id),clinique_mal[i].type_sang,clinique_mal[i].nation)!=EOF)

        {i++;}                  
                        
                *m=i;
                fclose(ficheMals);
                }
                
        else printf (" lecture impossible de la fiche malades") ;
}
void init_file(FILE *ficheMals,malade clinique_mal[], int *m)
{
        
        int i=0;
        char c ; 
        ficheMals=fopen("file_d_attente.txt","r");
        if (ficheMals != NULL)
                {
        while(fscanf(ficheMals,"%d %c %s %s %ld %s %s",&(clinique_mal[i].num),&c,clinique_mal[i].nom,clinique_mal[i].prenom,&(clinique_mal[i].Id),clinique_mal[i].type_sang,clinique_mal[i].nation)!=EOF)

        {i++;}                  
                
                *m=i;
                fclose(ficheMals);
                }
                
        else printf (" lecture impossible de la fiche malades") ;
}

void ajouter_mal(FILE *ficheMals,FILE *filedAtt, malade clinique_mal[],malade c_att[],int *m,int *nf )
{
char NOM[20];
char PRENOM[20];
long int ID;
char TYPE_SANG[5];
char NATION[20];
int j;
int i ;
i=0;
j=0;
        ficheMals=fopen("malade.txt","a+");
                if (ficheMals!=NULL)
                {
                        if (*m<=100) {
                printf ("donner les donnees sur le nouveau malade comme suit : nom prenom ID type_sang et nation \n");
                scanf("%s %s %ld %s %s",NOM,PRENOM,&ID,TYPE_SANG,NATION);
                j=(*m)+1;
                fprintf (ficheMals,"%d : %s %s %ld %s %s",j,NOM,PRENOM,ID,TYPE_SANG,NATION);
                strcpy(clinique_mal[j-1].nom,NOM);
                strcpy(clinique_mal[j-1].prenom,PRENOM); 
                clinique_mal[j-1].Id=ID; 
                strcpy(clinique_mal[j-1].type_sang,TYPE_SANG); 
                strcpy(clinique_mal[j-1].nation,NATION); 
                (*m)++;
                fclose(ficheMals);

                                    }else {

                                           printf("la clinique est pleine, veuillez ajouter le malade dans la fiche de la file d'attente\n");
                                           filedAtt=fopen("file_d_attente.txt","a");
                                                if(filedAtt!=NULL)
                                                        {printf ("donner les donnees sur le nouveau malade comme suit : nom prenom ID type_sang et nation \n");                                                         j=(*nf)+1;
                                                        scanf("%s %s %ld %s %s",c_att[(*nf)].nom,c_att[(*nf)].prenom,&(c_att[(*nf)].Id),c_att[(*nf)].type_sang,c_att[(*nf)].nation);
                                                        fprintf (filedAtt,"%d : %s %s %ld %s %s \n",j,c_att[*nf].nom,c_att[*nf].prenom,c_att[*nf].Id,c_att[*nf].type_sang,c_att[*nf].nation);
                                                        fclose(filedAtt);
                                                        (*nf)++;

                                                        }
                                                else printf("le fichier file_d_attente.txt ne peut pas s'ouvrire\n");
                                          }
                }
                else printf ("le fichier malade.txt ne peut pas s ouvrir\n");
}

void supprimer_mal(FILE *filedAtt,FILE *ficheMals,malade clinique_mal[],malade c_att[],int *m,int *nf,long int IDM)
{
int j ;
int i=0;
int k=0;
int b=0; 

        while(i<*m)
                {
                if (clinique_mal[i].Id==IDM)
                
                {b=1; 
                for (k=i;k<(*m)-1;k++)
                
                {
                clinique_mal[k]=clinique_mal[k+1];
                }
                
                (*m)=(*m)-1;            
                }
                
                i++;}
                

                                 ficheMals=fopen("malade.txt","w+");
                                        if((b==1)&&(ficheMals!=NULL))
                                                {
                                                        for(i=0;i<(*m);i++)
                                                                {

                                                                fprintf(ficheMals,"%d : %s %s %ld %s %s \n",i+1,clinique_mal[i].nom,clinique_mal[i].prenom,clinique_mal[i].Id,clinique_mal[i].type_sang,clinique_mal[i].nation);
                                                
                                                                }


                                                        if(c_att[0].Id!=0)
                                                                {
                                                                fprintf(ficheMals,"%d : %s %s %ld %s %s\n",*m+1,c_att[0].nom,c_att[0].prenom,c_att[0].Id,c_att[0].type_sang,c_att[0].nation);
                                                                }


                                
                                                        fclose(ficheMals);

                
                                                        for (k=0;k<(*nf)-1;k++)
                
                                                        {
                                                        c_att[k]=c_att[k+1];
                                                        }
                
                                                        (*nf)=(*nf)-1;          
                

                                                        filedAtt=fopen("file_d_attente.txt","w+");
                                                        if(filedAtt!=NULL)
                                                        {
                                                        for(i=0;i<(*nf);i++)
                                                                {

                                                                fprintf(filedAtt,"%d : %s %s %ld %s %s \n",i+1,c_att[i].nom,c_att[i].prenom,c_att[i].Id,c_att[i].type_sang,c_att[i].nation);
                                                
                                                                }
                                                        fclose(filedAtt); 
                                        

                                                        }else printf ("le fichier file_d_attente.txt ne peut pas s/'ouvrir \n"); 
                                                }else if (b==1) {printf ("le fichier malade.txt ne peux pas s/'ouvrir\n"); }
                                                else printf ("mauvais choix de l'Id\n"); 
                                        

}



long int recherche_mal_Id(malade clinique_mal[],int m)
{
long int ID;
int i;

printf ("donner l ID du malade que vous voulez afficher \n");
scanf ("%ld",&ID);

        for (i=0;i<m;i++) {
                if (ID == clinique_mal[i].Id){
                return(ID);
                          }
}
}

void recherche_mal_nat(malade clinique_mal[],int m)
{
char NATION[15];
int i ;


printf ("donner la nation (en miniscules) du malade que vous voulez afficher \n");
scanf ("%s",NATION);
        for (i=0;i<m;i++) {
                if (strcmp(NATION,clinique_mal[i].nation)==0){

                afficher_mal(clinique_mal[i]);
                          }

}
}

void recherche_mal_nom(malade clinique_mal[], int m )
{char NOM[20];
int i ;

printf ("donner la nation (en miniscules) du malade que vous voulez afficher \n");
scanf ("%s",NOM);
        for (i=0;i<m;i++) {
                if (strcmp(NOM,clinique_mal[i].nom)==0){
                afficher_mal(clinique_mal[i]);
                          }

}
}

void afficher_mal(malade x)
{
                printf("nom: %s \n",x.nom);
                printf("prenom: %s \n",x.prenom);
                printf("Id: %ld \n",x.Id) ;
                printf("type sang : %s \n",x.type_sang);
                printf(" nation : %s \n \n",x.nation) ;


}
